home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2000 #5
/
Amiga Plus CD - 2000 - No. 5.iso
/
Tools
/
Dev
/
fpc
/
demos
/
listtest.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2000-01-01
|
3KB
|
144 lines
PROGRAM test;
{
A small test of linklist unit.
nils.sjoholm@mailbox.swipnet.se
}
uses
{$ifdef Amiga}
exec,
{$endif}
linklist, strings;
VAR
Mylist : pList;
MyNode : pFPCNode;
i : Longint;
temp : Longint;
buffer : PChar;
bufsize : Longint;
templist : pList;
BEGIN
CreateList(Mylist);
AddNewNode(Mylist,'Monday');
AddNewNode(Mylist,'Tuesday');
AddNewNode(Mylist,'Wednesday');
AddNewNode(Mylist,'Thursday');
AddNewNode(Mylist,'Friday');
AddNewNode(Mylist,'Saterday');
AddNewNode(Mylist,'Sunday');
writeln;
WriteLN('This is the list');
PrintList(Mylist);
writeln;
WriteLN('Now we are going to remove the last node');
WriteLN('>> Press return');
readln;
RemoveLastNode(Mylist);
PrintList(Mylist);
writeln;
WriteLN('>> Press return to get the size of the list');
writeln;
readln;
WriteLN('The size of allocated list is ', SizeOfList(Mylist));
writeln;
writeln('Now we are going to print all strings' +#10+ 'in the list with the internal commands');
WriteLN('>> Press return');
readln;
i := NodesInList(Mylist);
MyNode := GetFirstNode(Mylist);
FOR temp := 1 TO i DO BEGIN
WriteLN(MyNode^.ln_Name);
MyNode := GetNextNode(MyNode);
END;
writeln;
WriteLN('We will move the last node to the top');
WriteLN('>> Press return');
readln;
MyNode := GetLastNode(Mylist);
MoveNodeTop(Mylist,MyNode);
PrintList(Mylist);
writeln;
WriteLN('We shall change the value in one node');
WriteLN('>> Press return');
readln;
MyNode := GetFirstNode(Mylist);
MyNode := GetNextNode(MyNode);
UpDateNode(MyNode,'This is the new day');
PrintList(Mylist);
writeln;
MyNode := GetNextNode(MyNode);
WriteLN('Now we delete one node');
WriteLN('>> Press return');
readln;
WriteLN('This node is going to be deleted ',GetNodeData(MyNode));
DeleteNode(MyNode);
PrintList(Mylist);
writeln;
WriteLN('Sort the list');
WriteLN('>> Press return');
readln;
SortList(Mylist);
PrintList(Mylist);
writeln;
writeln('Search for a node, in this case Friday');
WriteLN('>> Press return');
readln;
MyNode := FindNodeData(Mylist,'Friday');
IF MyNode <> NIL THEN BEGIN
WriteLN('found the node ',MyNode^.ln_Name);
{ or writeln('found the node ',GetNodeData(MyNode)); }
END ELSE BEGIN
WriteLN('Node not found');
END;
writeln;
WriteLN('And now copy the list to a stringbuffer' +#10+ 'and print it');
WriteLN('>> Press return');
readln;
bufsize := SizeOfList(Mylist);
buffer := StrAlloc(bufsize);
ListToBuffer(Mylist,buffer);
WriteLN(buffer);
writeln;
WriteLN('Now we try to copy the list to a new list');
WriteLN('>> Press return');
readln;
templist := CopyList(Mylist);
IF templist <> NIL THEN BEGIN
WriteLN('That went well, the new list is here');
PrintList(templist);
DestroyList(templist);
END ELSE BEGIN
WriteLN('no copy of list');
END;
writeln;
WriteLN('Press return to destroy the list');
readln;
DestroyList(Mylist);
writeln;
WriteLN('All done');
END.